home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 May: Tool Chest / Developer CD Series May 1996 (Tool Chest) (Apple Computer) (1996).iso / Sample Code / Snippets / Testing & Debugging / Audit / Src / Failure.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-07-21  |  1.3 KB  |  74 lines  |  [TEXT/KAHL]

  1. /*                                    Failure.c                                    */
  2. /*
  3.  * Failure.c
  4.  * Copyright © 1992-93, Apple Computer Inc. All Rights Reserved.
  5.  * Simple Failure handler.
  6.  */
  7.  
  8.  
  9. #include "Failure.h"
  10. #include <Errors.h>
  11. #include <Processes.h>
  12. #include <Types.h>
  13. #include <Resources.h>
  14. #include <QuickDraw.h>
  15. #include <Fonts.h>
  16. #include <Events.h>
  17. #include <Windows.h>
  18. #include <Menus.h>
  19. #include <TextEdit.h>
  20. #include <Dialogs.h>
  21. #include <Desk.h>
  22. #include <ToolUtils.h>
  23. #include <Memory.h>
  24. #include <Files.h>
  25. #include <OSUtils.h>
  26. #include <OSEvents.h>
  27. #include <DiskInit.h>
  28. #include <Packages.h>
  29. #include <Traps.h>
  30.  
  31. FailureRecordPtr        gFailurePtr;
  32. Boolean                    gDebugOnError;
  33. StringPtr                gFailureFile;
  34. long                    gFailureLine;
  35.  
  36. void
  37. __Failure(
  38.         OSErr            errorStatus,
  39.         short            messageIndex
  40.     )
  41. {
  42.         if (gDebugOnError)
  43.             DebugStr("\pFailure");
  44.         FailureNeverDebug(errorStatus, messageIndex);
  45. }
  46.  
  47. void
  48. FailureNeverDebug(
  49.         OSErr            errorStatus,
  50.         short            messageIndex
  51.     )
  52. {
  53.         gFailurePtr->status = errorStatus;
  54.         gFailurePtr->messageIndex = messageIndex;
  55.         if (gFailurePtr->status == noErr)
  56.             gFailurePtr->status = abortErr;
  57.         longjmp(gFailurePtr->jmpBuf, gFailurePtr->status);
  58. }
  59.  
  60. void
  61. __FailNIL(
  62.         short            messageIndex
  63.     )
  64. {
  65.         OSErr            status;
  66.         
  67.         status = MemError();
  68.         if (status == noErr)
  69.             status = ResError();
  70.         if (status == noErr)
  71.             status = memFullErr;
  72.         __Failure(status, messageIndex);
  73. }
  74.